package one.stand.service;

import one.stand.dto.Company2Dto;
import one.stand.dto.CompanyDto;
import one.stand.dto.CompanyServiceDto;
import one.stand.model.Company;
import one.stand.service.user.CompanyPublicService;

import java.util.List;
import java.util.Objects;
import java.util.Optional;

/**
 * 企业公共服务表
 * company
 * <p>
 * 官网:
 * website
 * demand
 */
public interface CompanyBaseService extends CompanyPublicService {

    Integer DEFAULT_COMPANY_ID = 0;

    String LABEL_VIDEO = "短视频权限";
    String LABEL_LIVE = "直播权限";
    String LABEL_SUPPLIER = "花园购商家";
    String LABEL_JXS = "经销商花园购";
    String LABEL_ZKGX = "使用中科公信";
    String LABEL_DYNAMIC = "红木圈权限";

    /**
     * 平台KEY：花园购
     */
    String PLATFORM_KEY_HUAYUAN = "huayuan";

    /**
     * 开启展厅
     */
    Integer SHOWROOMSTATE_OPEN = 1;

    int audit(Integer id, Integer state, String memo);

    void agent(Integer id, Integer agentMoney, Integer isAgent, Integer companyType);

    /**
     * 更新对应审核标示
     *
     * @param isSupply true:supply  false:Agent
     */
    void updateQjState(Integer id, boolean isSupply);

    void updateAgentTime(Integer id);

    void updateShowRoomStateById(Integer id, Integer showRoomState);

    /**
     * 获取企业基本信息
     */
    Company getById(Integer id);

    /**
     * 获取企业基本信息
     */
    Optional<Company2Dto> get(Integer id);

    Company2Dto get2(Integer id);

    /**
     * 企业列表
     */
    List<CompanyDto> selectList(String keyword, String label);

    /**
     * 企业列表
     */
    List<CompanyDto> selectTicketCompanyList(String keyword);

    /**
     * 获取企业服务购买
     */
    CompanyServiceDto getService(Integer companyId);

    /**
     * 是否1号小程序
     */
    boolean isOneWechat(Integer companyId);

    /**
     * 判断是否存在标签
     */
    boolean isByLabel(Integer companyId, String labelName);

    /**
     * 是否中科公信
     */
    boolean hasZkgx(Integer companyId);

    Integer getLabelId(String labelName);

    void reloadCompany(Integer companyId);

    static boolean isPlatform(Integer companyId) {
        return Objects.nonNull(companyId) && DEFAULT_COMPANY_ID.equals(companyId);
    }
}
